﻿using RndMaterialDisposalService.Models.RequestModel;
using RndMaterialDisposalService.Models;
using Microsoft.AspNetCore.Mvc;

namespace RndMaterialDisposalService.Services.Interface.SmallBatchTrial
{
    public interface ISmallBatchTrialService
    {
        /// <summary>
        /// 返回小批量试用跟踪电子流报表数据（带分页）
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        List<SmallBatchTrialReportFormModel> GetSmallBatchTrialReportFormPageList(SmallBatchTrialReportConditionModel Input);

        /// <summary>
        ///返回小批量试用跟踪电子流报表主数据
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        List<SmallBatchTrialReportFormModel> GetSmallBatchTrialReportFormData(SmallBatchTrialReportConditionModel Input);

        /// <summary>
        /// 新增小批量试用跟踪电子流业务数据
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<int> AddSmallBatchTrialBusinessData(SmallBatchTrialBusinessDataModel Input, List<SmallBatchTrialBusinessSubtableDataModel> SubtableInput);

        /// <summary>
        /// 查询加工-产品-人员配置数据(分页)
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<List<ProductProcessingPersonnelModel>> ProductProcessingPersonnelData(ProductProcessingPersonnelConditionModel Input);

        /// <summary>
        /// 查询加工-产品-人员配置数据
        /// </summary>
        /// <returns></returns>
        Task<List<ProductProcessingPersonnelModel>> ProductProcessingPersonnelDataList();

        /// <summary>
        /// 新增加工-产品-人员配置数据
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<int> AddProductProcessingPersonnelData(ProductProcessingPersonnelModel Input);

        /// <summary>
        /// 更新加工-产品-人员配置数据
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<int> EditProductProcessingPersonnelData(ProductProcessingPersonnelModel Input);

        /// <summary>
        /// 删除加工-产品-人员配置数据
        /// </summary>
        /// <param name="SysId"></param>
        /// <returns></returns>
        Task<int> DeleteProductProcessingPersonnelData(Guid SysId);


        /// <summary>
        /// 查询产品线信息配置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<List<ProductLineDetailsModel>> ProductLineDetailsData(ProductLineDetailsConditionModel Input);

        /// <summary>
        /// 新增产品线信息配置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<int> AddProductLineDetailsData(ProductLineDetailsModel Input);

        /// <summary>
        /// 更新产品线信息配置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<int> EditProductLineDetailsData(ProductLineDetailsModel Input);

        /// <summary>
        /// 删除产品线信息配置
        /// </summary>
        /// <param name="SysId"></param>
        /// <returns></returns>
        Task<int> DeleteProductLineDetailsData(Guid SysId);

        /// <summary>
        /// 查询产品线信息配置-条件检索
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<List<ProductLineDetailsModel>> SearchProductLineDetailsData(ProductLineDetailsConditionModel Input);

        /// <summary>
        /// 返回产品线跟踪工程师
        /// </summary>
        /// <returns></returns>
        Task<List<SmallBatchTrialPrackingEngineerModel>> TrialPrackingEngineerDetailsDataList();

        /// <summary>
        /// 返回与父流程相关子流程信息
        /// </summary>
        /// <param name="FatherProcInstId"></param>
        /// <returns></returns>
        List<ProcessAssociatedInformationModel> SelectProcessAssociatedInformationList(string FatherProcInstId);

        /// <summary>
        /// 修改表单试用范围-确定稿
        /// </summary>
        /// <returns></returns>
        Task<int> UpdateDetermineTrackMaterialTrackingFromJsonData(DetermineTrackMaterialTrackingModel DetermineTrackMaterialTracking);
    }
}
